package bots;

import java.awt.Graphics;

import utils.Vector2d;

/**
 * Petite interface "indicative" de ce qu'il peut y avoir dans un bot.
 * Il faut aussi g�rer l'ensemble des bots du jeu dans une structure � part.
 *  
 * @author L. Simon, Univ. Paris Sud, 2008
 *
 */
public interface IBot {
	
	/**
	 * @return Les coordonn�es du bot, ou -1,-1 si pas sur la carte par ex.
	 */
	public Vector2d getCoord();
	
	/**
	 * On va repr�senter les bots en rond... Pour les collisions sur la carte,
	 * on a besoin du rayon du bot
	 * @return le rayon (en coordonn�es de cartes) du bot
	 */
	public float botRadius();
	
	/**
	 * Affiche le bot sur le dessin... A vos id�es !
	 * @param g
	 */
	public void draw(Graphics g);
	
	/**
	 * @return la chaine representant le bot et son etat, pour debug ou autre
	 */
	public String toString();
	
	/**
	 * Mise � jour IA
	 * des decisions � prendre 
	 */
	public void AI();

	/**
	 * Suivant ses decisions et les autres, le bot peut mettre a jour ses positions
	 */
	public void updatePosition();
	
	/**
	 * Renvoie la vie du bot
	 * @return
	 */
	public float getLife();
	
	/**
	 * Touche le bot et lui enleve de la vie
	 * @param power la puissance 
	 * @return true si mort, false sinon
	 */
	public boolean hit(float power);
	
	/**
	 * Renvoie si le bot est en vie
	 * @return
	 */
	public boolean isAlive();
	
	/**
	 * Renvoie ou le bot regarde (pour tirer)
	 * @return
	 */
	public Vector2d getAim();
	
	/**
	 * 
	 * @return la couleur de l'équipe
	 */
	public int getColor();
	
	
}
